View Javadoc

1   package uba.db.sql.language;
2   
3   import org.apache.commons.lang.builder.EqualsBuilder;
4   import org.apache.commons.lang.builder.HashCodeBuilder;
5   
6   /***
7    * Representa la declaracion de una columna tipo CHAR dentro de la sentencia
8    * CREATE TABLE.
9    * 
10   * @version $Revision: 1.5 $
11   */
12  public class CharColumnDeclaration extends ColumnDeclarationBehavior {
13      private int maxChars;
14  
15      /***
16       * Longitud maxima de caracteres que por default tiene la columna.
17       * 
18       * @see #CharColumnDeclaration(ColumnName)
19       */
20      public static final int DEFAULT_MAX_CHARS = 1;
21  
22      /***
23       * @param columnName
24       *            nombre de la columna
25       * @param maxChars
26       *            cantidad de caracteres que puede tener la columna.
27       * @param constraint
28       *            constraint que indica si la columna puede o no ser null, etc.
29       */
30      public CharColumnDeclaration(ColumnName columnName, int maxChars,
31              ColumnConstraintDeclaration constraint) {
32          super(columnName, constraint);
33          this.maxChars = maxChars;
34      }
35  
36      /***
37       * @see #CharColumnDeclaration(ColumnName, int, ColumnConstraintDeclaration)
38       */
39      public CharColumnDeclaration(ColumnName columnName, int maxChars) {
40          super(columnName);
41          this.maxChars = maxChars;
42      }
43  
44      /***
45       * @see #CharColumnDeclaration(ColumnName, int, ColumnConstraintDeclaration)
46       */
47      public CharColumnDeclaration(ColumnName columnName) {
48          this(columnName, DEFAULT_MAX_CHARS);
49      }
50  
51      /***
52       * Construye una nueva instancia con el nombre especificado y la longitud
53       * por default.
54       * 
55       * @param columnName
56       *            nombre de la columna
57       * @param constraint
58       *            constraint que indica si la columna puede o no ser null, etc.
59       */
60      public CharColumnDeclaration(ColumnName columnName,
61              ColumnConstraintDeclaration constraint) {
62          this(columnName, DEFAULT_MAX_CHARS, constraint);
63      }
64  
65      /***
66       * @see uba.db.sql.language.ColumnDeclarationBehavior#columnTypeAsString()
67       */
68      protected String columnTypeAsString() {
69          return "CHAR(" + maxChars + ")";
70      }
71  
72      /***
73       * @see java.lang.Object#equals(java.lang.Object)
74       */
75      public boolean equals(Object obj) {
76          return EqualsBuilder.reflectionEquals(this, obj);
77      }
78  
79      /***
80       * @see java.lang.Object#hashCode()
81       */
82      public int hashCode() {
83          return HashCodeBuilder.reflectionHashCode(this);
84      }
85  
86      /***
87       * @see uba.db.sql.language.Visitable#accept(uba.db.sql.language.Visitor)
88       */
89      public void accept(Visitor visitor) {
90          visitor.visitCharColumnDeclaration(this);
91      }
92  
93      /***
94       * Retorna la cantidad máxima de caracteres que puede tener la columna.
95       */
96      public int maxChars() {
97          return maxChars;
98      }
99  }